package com.ruoyi.api.daoru;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * @author 寻觅
 * @since 2025-07-03
 */
@Data
public class User {
    @ExcelProperty("用户姓名")
    private String username;
    @ExcelProperty("用户年纪")
    private Integer age;

//1：已完成 2：已打款，签字种 3：已签字，打款中
//4：已签字 5：材料准备中  6：已发文件 7：已放弃
    @ExcelProperty(value = "状态", converter = StatusConverter.class)
    private Integer status;

    // 状态枚举，建立文字与数字的映射
    public enum Status {
        COMPLETED(1, "已完成"),
        PAYING_SIGNING(2, "已打款，签字中"),
        SIGNING_PAYING(3, "已签字，打款中"),
        SIGNED(4, "已签字"),
        PREPARING(5, "材料准备中"),
        SENT(6, "已发文件"),
        ABANDONED(7, "已放弃");

        private final int code;
        private final String text;

        Status(int code, String text) {
            this.code = code;
            this.text = text;
        }

        // 根据文字查找对应的数字代码
        public static Integer getCodeByText(String text) {
            if (text == null) return null;
            for (Status status : values()) {
                if (status.text.equals(text.trim())) {
                    return status.code;
                }
            }
            return null; // 未找到匹配的状态
        }

        // 验证状态是否有效
        public static boolean isValidCode(Integer code) {
            if (code == null) return false;
            for (Status status : values()) {
                if (status.code == code) {
                    return true;
                }
            }
            return false;
        }

        // 获取所有有效状态文本
        public static String getAllValidTexts() {
            return Arrays.stream(values())
                    .map(s -> s.text)
                    .collect(Collectors.joining("、"));
        }
    }
}
